![AthenaにIntellij IDEAから接続してみる](https://devio2023-media.developers.io/wp-content/uploads/2019/04/amazon-athena.png)
AthenaにIntellij IDEAから接続してみる
AWSマネジメントコンソールからAthenaにクエリを実行することができますが、Intellij IDEAを使用することでより便利になります。今回は接続方法をご紹介したいと思います。
正確には有償のIntellij IDEA Ultimate、または、DataGripが必要になります。
プロジェクトの作成
まずは接続の設定を行う前にからのプロジェクトを作成します。
Intellij IDEAを起動し、「Create New Project」を選択
今回はAthenaに接続したいだけなので「Empty Project」を選択
適当なプロジェクト名と保存先を指定し、「Finish」をクリック
AthenaのJDBCドライバを追加
ドライバのダウンロード
下記のサイトからAthenaのJDBCドライバをダウンロードします。特に理由がなければ JDBC 4.2 のバージョンをダンロードしてください。
JDBC ドライバーを介した Athena の使用 - Amazon Athena
AWS STSにて一時認証情報を作成(AssumeRole)して利用している場合は、Athenaカスタム認証情報プロバイダを利用する必要があります。下記のファイルをダウンロードしてください。
Intellij IDEAにAthenaのドライバ設定を作成
Intellij IDEAにAthenaのドライバ設定を作成していきます。
データベースツールウィンドウを表示し Data Source Propertiesをクリック
「+」→「Driver」をクリック
必要な情報を入力
- Name:
- Athena
- Class:
- com.simba.athena.jdbc.Driver
- Driver files:
- 上記でダンロードしたファイル2つ
- URL templates: default
- jdbc:awsathena://athena.[{host::ap-northeast-1}].amazonaws.com:443;S3OutputLocation={S3OutputLocation:param};
「Options」タブにてDialectを「Generic SQL」に変更し、OKをクリック
接続設定: アクセスキーの場合
「+」→ 「Athena」をクリック
- Name:
- 任意の接続名
- Host:
- 接続するリージョン
- User:
- アクセスキー
- Password:
- シークレットアクセスキー
- S3OutPutLocation
- クエリ結果を保存するS3バケット
最後に「Test Connection」をクリックし、接続できるか確認
接続設定: AssumeRoleの場合
スイッチロールしている場合の接続方法です。STSのassume-role
で作成した一時認証情報を使用します。
- Name:
- 任意の接続名
- Host:
- 接続するリージョン
- User:
- 未入力
- Password:
- 未入力
- S3OutPutLocation
- クエリ結果を保存するS3バケット
Advancedタブに切り替え下記の情報を入力。AwsCredentialsProviderArguments
にはassume-role
で取得した情報を入力。
- AwsCredentialsProviderClass
- com.amazonaws.custom.athena.jdbc.CustomIAMRoleAssumptionSAMLCredentialsProvider
- AwsCredentialsProviderArguments
- <AccessKeyId>,<SecretAccessKey>,<SessionToken>
クエリを実行してみる
Intellij IDEAからAthenaにクエリが実行でき結果まで確認できました。
まとめ
マネジメントコンソールでもクエリの実行は可能ですが、専用のツールのほうが色々と便利な機能が利用できるのでぜひ設定してみてはいかがでしょうか。
また、他のツールを使用する場合でもJDBCの設定は同じですので参考にしてみてください。
参考情報
Using AWS Athena from IntelliJ-based IDE | DataGrip Blog
一時的認証情報を使用してフェデレーティッドアイデンティティで、Amazon Athena に接続する | Amazon Web Services ブログ